/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.logging.Logger;
import javax.faces.model.SelectItem;

/**
 *
 * @author HNCR
 */
public class CategoriaProducto implements Serializable{
    private String cod_categoria;
    private String descripcion;
    private int estado;
    private String est;
    private String salida;
    
    public CategoriaProducto() {
    }

    public String getCod_categoria() {
        return cod_categoria;
    }

    public void setCod_categoria(String cod_categoria) {
        this.cod_categoria = cod_categoria;
    }  

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public int getEstado() {
        return estado;
    }

    public void setEstado(int estado) {
        this.estado = estado;
    }

    public String getEst() {
        return est;
    }

    public void setEst(String est) {
        this.est = est;
    }

    public String getSalida() {
        return salida;
    }

    public void setSalida(String salida) {
        this.salida = salida;
    }
    
    //==========================================================================
    //-----registro sp_categoria_producto_modificar
    public static boolean registrarCategoriaProducto (CategoriaProducto a)
    {
        System.out.println("aqui -1");
        boolean estado = false ;
        Connection conexion=null;
         try{
             conexion=ControladorBD.darConexionBD();
             CallableStatement st=conexion.prepareCall(" {CALL sp_categoria_producto_registro "
                     +"(?,?)} ");
             st.setString(1,a.getDescripcion()); 
             st.registerOutParameter(2,java.sql.Types.VARCHAR);
             st.execute();
             a.setCod_categoria(st.getString(2));
             if(a.getCod_categoria()!=null)
             {
               estado=true;
                }
        st.close();
        conexion.close();
             
         } catch(Exception error){
             System.out.println("Error en el metodo por: "+ error.getMessage());
                                 error.printStackTrace();
         }
         System.out.println("aqui -2");
        return estado;  
        
    }
    //==========================================================================
    //-----registro
    public static boolean eliminarCategoriaProducto (CategoriaProducto a)
    {
        boolean estado = false ;
        Connection conexion=null;
         try{
             conexion=ControladorBD.darConexionBD();
             CallableStatement st=conexion.prepareCall(" {CALL sp_categoria_producto_eliminar "
                     +"(?,?)} ");
             st.setString(1,a.getCod_categoria()); 
             st.registerOutParameter(2,java.sql.Types.VARCHAR);
             st.execute();
             a.setDescripcion(st.getString(2));
             if(a.getDescripcion()!=null)
             {
               estado=true;
                }
        st.close();
        conexion.close();
             
         } catch(Exception error){
             System.out.println("Error en el metodo por: "+ error.getMessage());
                                 error.printStackTrace();
         }
         //System.out.println("aqui -2");
        return estado;  
        
    }
    
    //-----modifica 
    public static boolean modificarCategoriaProducto (CategoriaProducto a)
    {
       // System.out.println("aqui -1");
        boolean estado = false ;
        Connection conexion=null;
         try{
             conexion=ControladorBD.darConexionBD();
             CallableStatement st=conexion.prepareCall(" {CALL sp_categoria_producto_modificar "
                     +"(?,?,?)} ");
             st.setString(1,a.getCod_categoria()); 
             st.setString(2,a.getDescripcion()); 
             st.registerOutParameter(3,java.sql.Types.VARCHAR);
             st.execute();
             a.setSalida(st.getString(3));
             if(a.getSalida()!=null)
             {
               estado=true;
                }
        st.close();
        conexion.close();
             
         } catch(Exception error){
             System.out.println("Error en el metodo por: "+ error.getMessage());
                                 error.printStackTrace();
         }
        // System.out.println("aqui -2");
        return estado;  
        
    }
     /*
     * combo 
     */
    public ArrayList<SelectItem>getCargarComboCategoria(){         
    ArrayList<SelectItem> arrayNivel = new ArrayList<SelectItem>();
    Connection conexion = null;
    ResultSet rs = null;
    try{
    conexion = ControladorBD.darConexionBD();
    CallableStatement st = conexion.prepareCall( "{CALL sp_categoria_producto_combo()}");    
    rs = st.executeQuery();        
    if (rs.next()){    
      do{
        arrayNivel.add(new SelectItem(rs.getString("cod_categoria"), 
                rs.getString("descripcion")));              
      } while (rs.next());
    }  
         rs.close();
         st.close();
         conexion.close();

     }catch(Exception error){
        System.out.println("Error en el metodo por: " +
                   error.getMessage());
                error.printStackTrace();
        }    
      
    return arrayNivel;
    } 
    
    //--------listar
    public static ArrayList<CategoriaProducto> getListarCategoria(){
     ArrayList<CategoriaProducto> arreglo=null;
     ResultSet rs=null;
        CategoriaProducto obj=null;
        Connection conexion = null;
        try{
           conexion = ControladorBD.darConexionBD();
           conexion.setAutoCommit(false);
           conexion = ControladorBD.darConexionBD();
            CallableStatement st = conexion.prepareCall( "{CALL sp_categoria_producto_listar()}");
            rs = st.executeQuery();
            if (rs.next()){
               arreglo=new ArrayList<CategoriaProducto>();   
                do{
                        obj =new CategoriaProducto();                        
                        obj.setCod_categoria(rs.getString("cod_categoria"));
                        obj.setDescripcion(rs.getString("descripcion"));  
                        obj.setEstado(rs.getInt("estado"));
                        if(obj.getEstado()==1){
                            obj.setEst("ACTIVO");
                        }else{
                            obj.setEst("INACTIVO");
                        } 
                        arreglo.add(obj);
                }while (rs.next());
            }
            st.close();
            conexion.setAutoCommit(true);
            conexion.close();
        }catch(Exception error){
            System.out.println("Error en el metodo por: " + error.getMessage());
            error.printStackTrace();
        }
        return arreglo;

    }
    
}
